package com.example.active_mq;


import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class ActiveMQConsumer {
    public static void main(String[] args) throws JMSException {
        /*
        * 连接工厂
        * 使用默认用户名、密码、路径
        * 因为：底层实现：final String defaultURL = "tcp://" + DEFAULT_BROKER_HOST + ":" + DEFAULT_BROKER_PORT
        * 所以：路径：tcp://host:61616
        * */

        //1.创建连接工厂
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        //2.创建连接
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        /*
        4.创建会话
        第一个参数：是否开启事物
        如果设置true,操作消息队列后,必须使用session.commit
        如果设置true,操作消息队列后,不使用session.commit
        第二个参数：消息是否自动确认
        * */
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
        //5.创建队列
        Queue queue = session.createQueue("hello");
        //6.创建消费者
        MessageConsumer consumer = session.createConsumer(queue);
        //7.消费消息
        while (true) {
            //10000为超时时间，消费者在这个时间内如果没有收到消息，将会关闭
            TextMessage messages = (TextMessage) consumer.receive(10000);
            if (messages != null) {
                System.out.println(messages.getText());
            } else {
                break;
            }
        }
        //8.关闭连接
        session.commit();
        session.close();
        connection.close();
        System.out.println("消息消费结束");

    }
}
